/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package monitor.tablespaces;

import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Luis
 */
public class MonitorTableSpaces {
    private String urljdbc;
    private String loginjdbc;
    private String passjdbc;
    private Connection conexion = null;
    private Statement sentencia = null;// Objeto necesario para enviar instrucciones SQL a la Base de Datos
    private ResultSet sentencia_sql = null; // Objeto necesario para guardar el resultado de un "select"
    ArrayList<Tabla> resultList = new ArrayList<Tabla>();
    
    public void Conectar(String usuario, String contrasena) throws SQLException {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            urljdbc = "jdbc:oracle:thin:@localhost:1521:XE";
            conexion = DriverManager.getConnection(urljdbc, usuario, contrasena);
            System.out.println("Conectado");
        } catch (Exception error1) {
            JOptionPane.showMessageDialog(null, "Se ha producido un error al conectar con el servidor.\nEs posible que el ip o puerto del servidor haya cambiado.");
           }
    }
     
    public void Desconectar() throws SQLException {
        try {
            if (conexion != null) {
                conexion.close();
            }
        } catch (Exception e) {
            System.out.println("Se ha producido una excepción finally " + e.getMessage());
        }
    }
      public void llamaINFOTS() throws SQLException {
        
            Conectar("system", "system");
            System.out.println("Conectado");
            CallableStatement cs;
            cs = conexion.prepareCall("{call INFOTS(?)}" ); 
            System.out.print("PREPARE CALL\n");
            cs.registerOutParameter(1,oracle.jdbc.driver.OracleTypes.CURSOR);
            cs.executeUpdate();
            ResultSet rs;
            rs = (ResultSet) cs.getObject(1);
     
            while (rs.next()) {
                int columnas = rs.getMetaData().getColumnCount();
                ArrayList<Object> datos = new ArrayList<Object>();
                for (int i = 0; i < columnas; i++) {
                    datos.add(rs.getObject(i + 1));
                }
                resultList.add(Tabla.fromArray(datos));
            }
            
             for (int i = 0; i < resultList.size(); i++) {
                System.out.print(resultList.get(i).getNombre_TableSpace()+ "\t\n");
                System.out.print(resultList.get(i).getNombre_Tabla()+ "\t\n");
                System.out.print(resultList.get(i).getCant_Individuos_Tabla()+ "\t\n");
                System.out.print(resultList.get(i).getTamaño_total_Tabla()+ "\t\n"); 
                System.out.print("\t\n");
                System.out.print("\t\n");
             }
            
            Desconectar();

       
    }
    public static void main(String[] args) throws SQLException {
        // TODO code application logic here
        MonitorTableSpaces m1= new MonitorTableSpaces();
        m1.Conectar("sys as sysdba", "system");
        m1.llamaINFOTS();
        
    }
}
